/* Copyright (c) 2004-2024 peigen.info. All rights reserved. */

package info.peigen.hotpot.business.customer.manage.form;

import info.peigen.hotpot.business.customer.facade.enums.operator.CustomerOperatorRole;
import info.peigen.hotpot.business.customer.facade.enums.operator.CustomerOperatorStatus;
import info.peigen.hotpot.common.service.base.manage.ManageFormBase;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.*;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import lombok.experimental.SuperBuilder;

import java.util.Date;

/**
 * <b>(CustomerOperatorManageEditForm)</b>
 * 管理后台 修改"客户操作员"表单
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2023-09-08
 */
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@Accessors(chain = true)
public class CustomerOperatorManageEditForm extends ManageFormBase {
    /** 操作员Id;默认只有一个Master操作员的时候,该Id与customerId一样 */
    @Size(max = 30)
    String                 operatorId;
    /** 客户Id */
    @Size(max = 30)
    String                 customerId;
    /** 登录名;可用是手机号/邮箱 */
    @NotEmpty
    @Size(max = 200)
    String                 loginName;
    /** 登录密码 */
    @NotEmpty
    @Size(max = 100)
    String                 loginPassword;
    /** 交易密码 */
    @NotEmpty
    @Size(max = 100)
    String                 payPassword;
    /** 密码盐 */
    @NotEmpty
    @Size(max = 20)
    String                 salt;
    /** 状态;Init:初始化,Enable:可用,Unable:不可用 */
    @Size(max = 20)
    CustomerOperatorStatus status;
    /** 操作员角色;Master:主操作员,Financial:财务,CustomerService:客服 */
    @Size(max = 20)
    CustomerOperatorRole   customerOperatorRole;
    /** 是否删除标记;Y/N */
    @Size(max = 20)
    String                 deleteFlag;
    /** 操作员手机号 */
    @NotEmpty
    @Size(max = 20)
    String                 mobile;
    /** 操作员邮箱 */
    @NotEmpty
    @Size(max = 100)
    String                 email;
    /** memo */
    @NotEmpty
    @Size(max = 2000)
    String                 memo;
    /** 最后登录失败时间 */
    @NotNull
    Date                   loginLastFailTime;
    /** 登录密码错误次数 */
    @NotNull
    Integer                loginPasswordErrorTimes;
    /** 登录密码失效时间 */
    @NotNull
    Date                   loginPasswordValidTime;
    /** 最后一次登录密码修改时间 */
    @NotNull
    Date                   loginPasswordLastModifyTime;
    /** 最后支付失败时间 */
    @NotNull
    Date                   payLastFailTime;
    /** 交易密码错误次数 */
    @NotNull
    Integer                payPasswordErrorTimes;
    /** 交易密码失效时间 */
    @NotNull
    Date                   payPasswordValidTime;
    /** 最后一次登录密码修改时间 */
    @NotNull
    Date                   payPasswordLastModifyTime;
    /** 最后一次登录时间 */
    @NotNull
    Date                   lastLoginTime;
    /** 最后登录IP */
    @NotEmpty
    @Size(max = 20)
    String                 lastLoginIp;
    /** 逻辑删除标记 */
    @NotNull
    Integer                enable;
}